{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/vitaldb/examples/blob/master/predict_mortality.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RkFymRLltmw4"
      },
      "source": [
        "# Machine learning model for predicting in-hospital mortality\n",
        "In this example, we will learn how to build a model for predicting in-hospital mortality with <code>VitalDB</code> dataset.<br>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "TWjTAJJrtmw9"
      },
      "source": [
        "## Preprocessing"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "1tnmS-S_MrAM",
        "outputId": "4af3e2d3-2e85-4691-d3a6-3e7d75068bd0"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "37/4274 train, 18/1969 test\n"
          ]
        }
      ],
      "source": [
        "import pandas as pd\n",
        "\n",
        "# Set variables\n",
        "OUTCOME_VAR = 'death_inhosp'\n",
        "INPUT_VARS = ['age', 'preop_hb', 'preop_alb', 'preop_ast', 'preop_cr']\n",
        "\n",
        "# Load dataset\n",
        "df = pd.read_csv('https://api.vitaldb.net/cases')\n",
        "df = df[df['asa'] < 6]\n",
        "\n",
        "# Split a dataset into train and test sets\n",
        "ntrain = int(len(df) * 0.7)\n",
        "y_train = df.loc[:ntrain, OUTCOME_VAR]\n",
        "x_train = df.loc[:ntrain, INPUT_VARS]\n",
        "y_test = df.loc[ntrain:, OUTCOME_VAR]\n",
        "x_test = df.loc[ntrain:, INPUT_VARS]\n",
        "\n",
        "# Print the number of train and test sets\n",
        "print('{}/{} train, {}/{} test'.format(sum(y_train), len(y_train), sum(y_test), len(y_test)))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BJJiXjFFtmxA"
      },
      "source": [
        "## Compute auroc and auprc scores using ASA class"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "KQ_hJ1FvNIGl",
        "outputId": "1980c32c-ef14-40f0-de5d-9c752827e893"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "ASA auroc: 0.900, auprc: 0.335\n"
          ]
        }
      ],
      "source": [
        "# ASA class\n",
        "from sklearn.metrics import roc_auc_score, auc, precision_recall_curve, roc_curve\n",
        "y_pred_asa = df.loc[ntrain:, 'asa']\n",
        "\n",
        "# Compute area under the ROC AUC from prediction scores\n",
        "auroc_asa = roc_auc_score(y_test, y_pred_asa)\n",
        "\n",
        "# Compute the precision recall curve\n",
        "prc_asa, rec_asa, thresholds = precision_recall_curve(y_test, y_pred_asa)\n",
        "\n",
        "# Compute area under the precision-recall curve\n",
        "auprc_asa = auc(rec_asa, prc_asa)\n",
        "print('ASA auroc: {:.3f}, auprc: {:.3f}'.format(auroc_asa, auprc_asa))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RrjQVRa-tmxB"
      },
      "source": [
        "## Modeling with Logistic Regression"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fJgNhKGhNJZw",
        "outputId": "d889a5d9-f0ca-4fc1-c2e4-47c385639a6b"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "LR auroc: 0.947, auprc: 0.236\n"
          ]
        }
      ],
      "source": [
        "# 1 - Logistic regression using SimpleImputer()\n",
        "from sklearn.impute import SimpleImputer\n",
        "imp = SimpleImputer().fit(x_train)\n",
        "x_train_imputed = imp.transform(x_train)\n",
        "x_test_imputed = imp.transform(x_test)\n",
        "\n",
        "# 2 - Logistic regression using LogisticRegression()\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "model = LogisticRegression().fit(x_train_imputed, y_train)\n",
        "y_pred_lr = model.predict_proba(x_test_imputed)[:, 1]\n",
        "\n",
        "# Compute AUROC and AUPRC\n",
        "auroc_lr = roc_auc_score(y_test, y_pred_lr)\n",
        "prc_lr, rec_lr, thresholds = precision_recall_curve(y_test, y_pred_lr)\n",
        "auprc_lr = auc(rec_lr, prc_lr)\n",
        "print('LR auroc: {:.3f}, auprc: {:.3f}'.format(auroc_lr, auprc_lr))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "X51CPIDrtmxD"
      },
      "source": [
        "## Modeling with Gradient Boosting"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Oe9U_XvNNJiC",
        "outputId": "592e0edd-0fc1-45a1-bd57-894e88d1c5be"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "GBM auroc: 0.957, auprc: 0.623\n"
          ]
        }
      ],
      "source": [
        "# 3 - Gradient Boosting using XGBClassifier()\n",
        "from xgboost import XGBClassifier\n",
        "model = XGBClassifier(learning_rate=0.07, max_depth=4, n_estimators=50, subsample=0.8, colsample_bytree=0.8, use_label_encoder=False, eval_metric='logloss')\n",
        "model.fit(x_train, y_train)\n",
        "y_pred_gbm = model.predict_proba(x_test)[:, 1]\n",
        "\n",
        "# Compute AUROC and AUPRC\n",
        "auroc_gbm = roc_auc_score(y_test, y_pred_gbm)\n",
        "prc_gbm, rec_gbm, thresholds = precision_recall_curve(y_test, y_pred_gbm)\n",
        "auprc_gbm = auc(rec_gbm, prc_gbm)\n",
        "print('GBM auroc: {:.3f}, auprc: {:.3f}'.format(auroc_gbm, auprc_gbm))"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "##Plot results"
      ],
      "metadata": {
        "id": "6Wkp_xsNuMKD"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "fpr_asa, tpr_asa, _ = roc_curve(y_test, y_pred_asa)\n",
        "fpr_lr, tpr_lr, _ = roc_curve(y_test, y_pred_lr)\n",
        "fpr_gbm, tpr_gbm, _ = roc_curve(y_test, y_pred_gbm)\n",
        "\n",
        "plt.figure(figsize=(5,5))\n",
        "plt.plot(fpr_asa, tpr_asa, label='ASA = {:0.3f}'.format(auroc_asa))\n",
        "plt.plot(fpr_lr, tpr_lr, label='LR = {:0.3f}'.format(auroc_lr))\n",
        "plt.plot(fpr_gbm, tpr_gbm, label='GBM = {:0.3f}'.format(auroc_gbm))\n",
        "plt.plot([0, 1], [0, 1], lw=1, linestyle='--')\n",
        "plt.xlim([0, 1])\n",
        "plt.ylim([0, 1])\n",
        "plt.legend()\n",
        "plt.xlabel('False Positive Rate')\n",
        "plt.ylabel('True Positive Rate')\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 338
        },
        "id": "41jY7RAiuNx4",
        "outputId": "bb3f0e21-26d1-443f-fc70-930104e0f349"
      },
      "execution_count": 13,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 360x360 with 1 Axes>"
            ],
            "image/png": "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Vdtef/11veyyy9Tl/T5mZGRoXl5e1fvPPvusnnrqqTpy5MhGiWHt2rXav39/LS0t1S1btmj37t21srLyoH1cLpcmJSXphg0bVFX1/vvv15deeklVVT/88EMdPXq0ut1uXbp0qQ4bNkxVVXNzczUlJUVzc3M1Ly9PU1JSDrqOmtT0ewFWaD3zUtCVSJXgrCqVrF3L9omTKF231jramyZVVFTE119/zaxZs5g/f37V9p07d9K5c2dCvN/HpKQk2lVb+2vevHk8/vjjZGVlkZmZ2eA43n//fa644goiIyNJSUkhNTWV5cuXH7RPbm4uERER9OzZE4Czzz6bd955p+r4cePGISKcdNJJ7N27l507d/Lpp59y9tlnEx8fT7t27Tj77LP55JNPGhxvXQTlpCXBlkdLVq8m49c30emBPxB7xhlOh2Mc8uC/1rJux75GPWefY9vwhwv61rrP+++/z+jRo+nZsyft27dn5cqVDB48mLFjx3LqqaeyaNEiRo0axTXXXMMJJ5wAQEZGBjt37mTYsGGMHTuWN954gzvvPHwax2nTpvHFF18ctv2KK67gnnsOnl4jKyuLk046qep1UlISWVkH94hMSEigsrKSFStWMGTIEN5++20yMjKqju/Spcthxx9pe1MK0kQaXJm0cs8eOj/8R0uixhHz5s3jtttuAzwJbt68eQwePJikpCQ2bNjA559/zueff86oUaN46623GDVqFG+88QZjx46tOmbixIk1JtInn3yyUWMVEebPn8+0adMoKyvjnHPOITQ0tFE/wx+CMpEGS8V4//LllG3cRPw1LWPuVFO7o5Uc/SEvL4/PP/+cNWvWICK4XC5EhBkzZiAiREZGMmbMGMaMGcMxxxzDe++9x6hRo5g3bx67du3itddeA2DHjh1s2rSJtLS0g85flxJpYmJiVekSPH1sExMPHzU+fPhwFi1aBMBnn33Gxo0baz0+MTGRL7/88qDtp59+et1+UA1V35urTj3adI3W1X88pdYbyYGgaPFi3TD8ZC1autTpUIyDnG5seuGFF3Ty5MkHbRs5cqR+9dVXunLlSs3KylJVTyPPtddeqzNmzNANGzZoz549Dzpm+vTp+uCDDzYolh9//PGgxqaUlJTDGptUVXfv3q2qqqWlpXrmmWfqf//7X1VV/eCDDw5qbBo6dKiqehqbunXrpnl5eZqXl6fd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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    }
  ],
  "metadata": {
    "colab": {
      "name": "predict_mortality.ipynb",
      "provenance": [],
      "include_colab_link": true
    },
    "kernelspec": {
      "display_name": "Python 3 (ipykernel)",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.9.12"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}